package com.lagou.client;

import com.lagou.model.User;
import com.lagou.model.UserMessage;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 实现客户端界面的描绘
 */
public class ClientView {


    /**
     * 为了使用输入输出流，使用合成复用原则
     */
    private ClientInitClose cic;

    //使用构造方法进行对成员变量初始化
    public ClientView (ClientInitClose cic){
        this.cic = cic;
    }



    /**
     * 自定义成员方法实现主界面的绘制
     */
    public void clientMainPage() throws IOException, ClassNotFoundException {
        while(true){

            System.out.println("\t\t\t在线考试系统");
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            System.out.print("   [1] 学员系统");
            System.out.println("   [2] 管理员系统");
            System.out.println("  [0] 退出系统");
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            System.out.println("请输入您的选择：");
           // Scanner sc  = new Scanner(System.in);
           // int choose  = sc.nextInt();
            int choose = ClientScanner.getScanner().nextInt();  //调用封装好的扫描器一用
            switch (choose){
                case 1:
                   // System.out.println("正在进入学员系统...");break;
                    clientUserLogin();break;
                case 2 :
                    //System.out.println("正在进入管理员系统...");break;
                    clientManagerLogin(); break;
                case 0:
                    System.out.println("正在退出系统...");return;  //return用于结束当前方法， break用于结束循环
                default:
                    System.out.println("输入序号不正确，请重新选择！");

            }
        }

    }
    //管理员登录
    private void clientManagerLogin() throws IOException, ClassNotFoundException {
        System.out.println("请输入管理员的账户：");
        String userName = ClientScanner.getScanner().next();
        System.out.println("请输入管理员的密码：");
        String password = ClientScanner.getScanner().next();

        UserMessage tum = new UserMessage("managerCheck",new User(userName,password));
        //将UserManager类型的对象通过对象输出流的方式发送到服务器
        cic.getOot().writeObject(tum);
        System.out.println("客户端消息发送成功！");

        //客户端接收服务器发送的消息并且判断给出相应的提示
        tum = (UserMessage) cic.getOis().readObject();
        if("success".equals(tum.getType())){
            System.out.println("登录成功，欢迎使用!");
        }else{
            System.out.println("登录失败，请重试！");
        }

    }

    //将文件中的数据内容读取出来，放到list集合中
    public static List getList(File file, List list) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            for (String line = reader.readLine();
                 line != null;
                 line = reader.readLine()) {
                list.add(line);
            }
            reader.close();
            return list;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    // 学员登录
    //通过对象输出流将学员信息发送到服务器端
    public void clientUserLogin() throws IOException {
         List li = new ArrayList();
         // FileReader fr = new FileReader("G:/r.txt");
        List list = getList(new File("G:/r.txt"), li);

            System.out.println("请输入学员登录用户名：");
            String userName = ClientScanner.getScanner().next();
            System.out.println("请输入学员登录密码：");
            String password = ClientScanner.getScanner().next();

           /* li.add(userName);
            li.add(password);*/
            //先把集合中的学员信息打印出来， 看着方便点 （还没有判断添加哦，往下看）
            System.out.println("集合中的元素有："+list);
            UserMessage tum1 = new UserMessage("userCheck",new User(userName,password));
            cic.getOot().writeObject(tum1);
            System.out.println("客户端成功发送学员账户密码信息！");

           if(list.contains(userName) /*&& list.contains(password)*/){
               System.out.println("学员信息已经存在，请重新输入！");
           } else {
                li.add(userName);
                li.add(password);
                System.out.println("学员信息添加成功！");
                System.out.println("目前学员的全部信息有："+list);
            }

           //将集合中的元素写入到文件 b.txt 中
        BufferedWriter bw = new BufferedWriter(new FileWriter("G:/b.txt"));

        for(int i=0;i<list.size();i++){
            Object obj = list.get(i);
            bw.write((String) obj);
            bw.newLine(); //换行
            bw.flush();
        }
        bw.close();


    }
        //判断集合中是否存在学员信息， 存在将提示用户重新输入，不存在将保存到集合中
       /*  public  void add() throws IOException {

        System.out.println("请输入学员账户：");
        String userName = ClientScanner.getScanner().next();
        System.out.println("请输入密码：");
        String password = ClientScanner.getScanner().next();
        System.out.println("添加成功！");
        }*/

       /* UserMessage tum1 = new UserMessage("userCheck",new User(userName,password));
        cic.getOot().writeObject(tum1);
             System.out.println("客户端消息发送成功！");*/



}
